# @Time    :2025/3/26 14:55
"""
参数传递的四种方式：
1，必须参数，   按位置
2，关键字传参
3，默认传参
4，不定长传参
"""
print("--------1,必须参数------")


def funcs(num1, num2):
    """" 这个位置是函数说明文档"""
    print(num1)
    print(num2)


funcs(1, 2)
help(funcs)
print("--------2,关键字传参------")


def funcs(num1, num2):
    print(num1)
    print(num2)


funcs(3, num2=22)
print("--------3,默认传参------")


def funcs(num1, num2=2):
    print(num1)
    print(num2)


funcs(3, num2=100)
print("--------4.1不定长传参-----")


def c(num1, *args):
    print(num1)
    print(*args)


c(2, 1, 2, 3)
print("--------4.2不定长传参---*args封装的是元组--")


def c(num1, *args, num2):
    print(num1)
    print(*args)
    print(num2)


c(2, 1, 2, 3, num2=99)

print("--------4.3不定长传参---**args封装的是字典--")


def f(num1, **args):
    print(num1)
    print(*args, type(args))


f(2, a=12, b=13)

print("--------------强制使用位置参数或关键字参数-----------")


def f(a, b, /, c, d, e, *, g, h):
    print(a, b, c, d, e, g, h)


f(12, 13, 14, 16, 17, g=18, h=19)

print("--------" * 30)
print("--------------解包传参1,--元组---------")


def c(num1, *args):
    print(num1)
    print(*args)


c(2, *(1, 2, 3))
print("----解包传参1.1,--可以是解包 列表，字符串，元组-----")


def c(num1, *args):
    """
    可以是解包 列表，字符串，元组
    :param num1:
    :param args:
    :return:
    """

    print(num1)
    print(*args)


c(2, *"1, 2, 3")
help(c)
print("--------------解包传参2,----------------")


def c(num1, **args):
    print(*args)
    print(num1)


c(num1=12, **{"name": "qq", "age": 3})
